<?php
class ConsultaDetalhe extends Zend_Db_Table
{
	
    public function grid(array $request)
    {
        $dados = array();
		
		$select = $this->_db->select()
                       ->from($this, 'COUNT(*) AS  qtd')
                       ->where('idamostra = ?',$this->_idAmostra);
                 
        $result = $this->_db->fetchRow($select);
    	
        if($result->qtd > 0){
            $total_pages = ceil($result->qtd / $request['rows']);
        }else{
            $total_pages = 0;
        }

        if($request['page'] == 1){
            $start = 0;
        }else{
            $start = ($request['rows'] * $request['page']) - $request['rows'];
        }
        
        $dados['total']	= $total_pages;
        $dados['page']	= $request['page'];
        $dados['records'] = $result->qtd;
     
        
	$select =  "SELECT DISTINCT a.idAmostra, a.inicial,";
        $select .= " FROM amostra a";
        $select .= " INNER JOIN amostra ra ON (a.idAmostra = ra.idAmostra)";
        $select .= " where a.idAmostra=1";
        
				
			 
      if($request['sidx'])
       {
            $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
        }else{
            $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
        }
		
     	$remessa = $this->_db->fetchALL($select);
			
		for ($cont =0; $cont < count($consulta); $cont++)
				{
					$dados['rows'][$cont]['id'] = $consulta[$cont]['idAmostra'];
					$dados['rows'][$cont]['cell'] = array(  $consulta[$cont]['idAmostra'],
					$consulta[$cont]['Inicial'],
					);	
				}
		
	 return $dados;
    }
			

	public function getSolicitacao( $amostra,array $request)
	{
		$dados = array();
		
		$select = $this->_db->select()
		               ->from('solicitacao_amostra', 'count(distinct idAmostra) as qtd')
		               ->where('idAmostra = ?', $amostra);
		               
    	        $result = $this->_db->fetchRow($select);
   
                if($result['qtd'] > 0){
                    $total_pages = ceil($result['qtd'] / $request['rows']);
                }else{
                    $total_pages = 0;
                }

                if($request['page'] == 1){
                    $start = 0;
                }else{
                    $start = ($request['rows'] * $request['page']) - $request['rows'];
                }
        
               $dados['total']	= $total_pages;
               $dados['page']	= $request['page'];
               $dados['records'] = $result['qtd'];

        
		$select  = " select DISTINCT  sa.idSolicitacao, c.nomeCompleto cliente,  e.idExame, e.nomecurto nomExame,";
                $select .= " Case sa.situacao";
                $select .=" WHEN 'P' Then 'PENDENTE'";
                $select .=" WHEN 'C' Then 'CONCLUIDO'";
                $select .=" END AS  situacao,c.nomeCurto, ";
                $select .= " sa.numColeta,  sa.datacadastro as datacad";
                $select .= " From solicitacao_amostra sa inner join  cliente c on(c.idCliente=sa.idCliente)";
                $select .= " inner join  amostra a on(a.idAmostra=sa.idAmostra)";
                $select .= " inner join  exame e on(e.idExame=sa.idExame )  ";
       		$where  =  $this->_db->quoteInto(" where sa.idamostra =  ?", $amostra);
		$select .= $where;
	 
                
                
			 
               if($request['sidx']){
                    $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
                }else{
                    $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
                }
		
            	$solicitacao = $this->_db->fetchALL($select);
			
		for ($cont =0; $cont < count($solicitacao); $cont++)
		{
					$dados['rows'][$cont]['id'] = $solicitacao[$cont]['idSolicitacao'];
					$dados['rows'][$cont]['cell'] = array(  $solicitacao[$cont]['idSolicitacao'],
										trim($solicitacao[$cont]['nomExame']),
                                            
										trim($solicitacao[$cont]['cliente']),
										$solicitacao[$cont]['datacad'],													
										$solicitacao[$cont]['situacao'] 
										);
															
			
				}
		
	 return $dados;
    }
    
	public function getSorologia($amostra, array $request)
	{
		$dados = array();
		
		$select = $this->_db->select()
		               ->from('resultado', 'count(distinct idResultado) as qtd')
		               ->where('idAmostra = ?', $amostra);
		               
    	        $result = $this->_db->fetchRow($select);
   
                if($result['qtd'] > 0){
                    $total_pages = ceil($result['qtd'] / $request['rows']);
                }else{
                    $total_pages = 0;
                }

                if($request['page'] == 1){
                    $start = 0;
                }else{
                    $start = ($request['rows'] * $request['page']) - $request['rows'];
                }
        
               $dados['total']	= $total_pages;
               $dados['page']	= $request['page'];
               $dados['records'] = $result['qtd'];

        
                $select  = "SELECT r.idResultado, r.idRotina, e.nomeLongo, e.tipoResultado, r.valor1, r.valor2,";
                $select .= " m.nome as metodologia, k.nome as kitSorologia, u.nome as usuCad,";
                $select .= " CASE r.resposta";
                $select .= " WHEN 'P' Then 'POS'";
                $select .= " WHEN 'N' Then 'NEG'";
                $select .= " WHEN 'I' Then 'IND'";
                $select .= " WHEN 'R' Then 'REP'";
        	$select .= " END AS resposta,";
                $select .= " (SELECT us.nome FROM usuario us";
                $select .= "  WHERE r.idUsuAtu = us.idUsuario) AS usuAtu";
                $select .= " FROM resultado r";
                $select .= " INNER JOIN exame e on (r.idExame = e.idExame)";
                $select .= " INNER JOIN metodologia m ON (r.idMetodologia = m.idMetodologia)";
                $select .= " INNER JOIN kitsorologia k ON (r.idKitSorologia = k.idKitSorologia)";
                $select .= " INNER JOIN usuario u on (u.idUsuario = r.idUsuCad)";
                $where  =  $this->_db->quoteInto(" where r.idamostra =  ?", $amostra);
		$select .= $where;
	 			 
               if($request['sidx']){
                    $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
                }else{
                    $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
                }
		
            	$resultado = $this->_db->fetchALL($select);
		
                for ($cont =0; $cont < count($resultado); $cont++)
		{
					$dados['rows'][$cont]['id'] = $resultado[$cont]['idResultado'];
					$dados['rows'][$cont]['cell'] = array(  
                                                                                $resultado[$cont]['idRotina'],
                                            					trim($resultado[$cont]['nomeLongo'])."(".trim($resultado[$cont]['tipoResultado']).")",
                                                                                $resultado[$cont]['resposta'],
                                                                                $resultado[$cont]['valor1'],
                                                                                $resultado[$cont]['valor2'],
                                                                                $resultado[$cont]['metodologia'],
                                                                                $resultado[$cont]['kitSorologia'],
                                                                                $resultado[$cont]['usuCad'],
                                                                                $resultado[$cont]['usuAtu']
										);
															
			
				}
         
	 return $dados;
    }
    
	public function getLiberacaoRotina($amostra, array $request)
	{
            	$dados = array();
		
		$select = $this->_db->select()
		               ->from('liberacao_rotina', 'count(distinct idLiberacaoRotina) as qtd');
		               
    	        $result = $this->_db->fetchRow($select);
   
                if($result['qtd'] > 0){
                    $total_pages = ceil($result['qtd'] / $request['rows']);
                }else{
                    $total_pages = 0;
                }

                if($request['page'] == 1){
                    $start = 0;
                }else{
                    $start = ($request['rows'] * $request['page']) - $request['rows'];
                }
        
               $dados['total']	= $total_pages;
               $dados['page']	= $request['page'];
               $dados['records'] = $result['qtd'];

        
		$select  = " SELECT DISTINCT lb.idLiberacaoRotina, lb.idRotina, lb.dataLiberacao, u.nome as usuBio, us.nome as usuAux";
                $select .= " FROM liberacao_rotina lb";
                $select .= " INNER JOIN usuario u on (u.idUsuario = lb.idUsuBio)";
                $select .= " INNER JOIN usuario us on(us.idUsuario = lb.idUsuAux)";
                $select .= " INNER JOIN rotina_amostra ra ON (ra.idRotina = lb.idRotina)";
       		$where  =  $this->_db->quoteInto(" where ra.idAmostra =  ?", $amostra);
		$select .= $where;
	 			 
               if($request['sidx']){
                    $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
                }else{
                    $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
                }
		
                $resultado = $this->_db->fetchALL($select);
			
		for ($cont =0; $cont < count($resultado); $cont++)
		{
					$dados['rows'][$cont]['id'] = $resultado[$cont]['idLiberacaoRotina'];
					$dados['rows'][$cont]['cell'] = array(  
                                                                                $resultado[$cont]['idRotina'],
                                            					$resultado[$cont]['dataLiberacao'],
                                                                                $resultado[$cont]['usuBio'],
										$resultado[$cont]['usuAux']
                                                                                );
															
			
				}
		
	 return $dados;
    }
    
        public function getAnalise($amostra, array $request)
	{
		$dados = array();
		
		$select = $this->_db->select()
		               ->from('analise', 'count(distinct idAmostra) as qtd')
		               ->where('idAmostra = ?', $amostra);
		               
    	        $result = $this->_db->fetchRow($select);
   
                if($result['qtd'] > 0){
                    $total_pages = ceil($result['qtd'] / $request['rows']);
                }else{
                    $total_pages = 0;
                }

                if($request['page'] == 1){
                    $start = 0;
                }else{
                    $start = ($request['rows'] * $request['page']) - $request['rows'];
                }
        
               $dados['total']	= $total_pages;
               $dados['page']	= $request['page'];
               $dados['records'] = $result['qtd'];

                $select  = " select a.idAcao, ac.descricao, u.nome as usuCad, a.dataCadastro, a.dataAtualizacao,";
                $select .= " Case a.eAtivo";
                $select .= " WHEN '1' THEN 'ATIVO'";
                $select .= " WHEN '0' THEN 'INATIVO'";
                $select .= " END AS eAtivo,";
                $select .= " (SELECT us.nome FROM usuario us";
                $select .= "  WHERE a.idUsuAtu = us.idUsuario) AS usuAtu";
                $select .= " FROM analise a";
                $select .= " INNER JOIN acao ac on(ac.idAcao = a.idAcao)";
                $select .= " INNER JOIN usuario u on (u.idUsuario = a.idUsuCad)";
                $where  =  $this->_db->quoteInto(" where a.idamostra =  ?", $amostra);
		$select .= $where;
	 			 
               if($request['sidx']){
                    $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
                }else{
                    $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
                }
		
                //print_r($select);
            	$resultado = $this->_db->fetchALL($select);
			
		for ($cont =0; $cont < count($resultado); $cont++)
		{
					$dados['rows'][$cont]['id'] = $resultado[$cont]['idAcao'];
					$dados['rows'][$cont]['cell'] = array(  
                                                                                $resultado[$cont]['descricao'],
                                            					$resultado[$cont]['usuCad'],
										$resultado[$cont]['dataCadastro'],													
										$resultado[$cont]['usuAtu'],
                                                                                $resultado[$cont]['dataAtualizacao'],
                                                                                $resultado[$cont]['eAtivo']
										);
															
			
				}
		
	 return $dados;
    }

        public function getremessa(array $request, $idAmostra, $inicial)
	{
		$dados = array();
		$select = $this->_db->select()
		               ->from('remessa', 'count(distinct idRemessa) as qtd')
                               ->join('liberacao_rotina', 'liberacao_rotina.idLiberacaoRotina = remessa.idLiberacaoRotina')
		               ->join('rotina_amostra', 'rotina_amostra.idRotina = liberacao_rotina.idRotina')
                               ->join('amostra','amostra.idAmostra = rotina_amostra.idAmostra')
                               ->where('amostra.idAmostra = ?',$idAmostra)
                               ->where('amostra.inicial = ?',$inicial);
		 
		               
    	        $result = $this->_db->fetchRow($select);
                
                                
                if($result['qtd'] > 0){
                    $total_pages = ceil($result['qtd'] / $request['rows']);
                }else{
                    $total_pages = 0;
                }

                if($request['page'] == 1){
                    $start = 0;
                }else{
                    $start = ($request['rows'] * $request['page']) - $request['rows'];
                }
        
               $dados['total']	= $total_pages;
               $dados['page']	= $request['page'];
               $dados['records'] = $result['qtd'];
     
        
		$select =   " SELECT r.idRemessa, r.dataRemessa, a.idAmostra, a.inicial, e.nomeLongo, e.tipoResultado,"; 
		$select .=  "  CASE re.resposta";
		$select .=  " WHEN 'P' Then 'POS'";
		$select .=  " WHEN 'N' Then 'NEG'";
		$select .=  " WHEN 'I' Then 'IND'";
		$select .=  " WHEN 'R' Then 'REP'";
		$select .=  " END AS resposta,";
		$select .=  " re.valor1, re.valor2,  m.nome as metodologia, k.nome as kitsorologia";
		$select .=  " FROM  remessa r inner join  liberacao_rotina lr on (r.idliberacaorotina=lr.idliberacaorotina)";
		$select .=  " inner join resultado re on(lr.idrotina=re.idrotina)";
		$select .=  " inner join exame e on(e.idexame=re.idexame)";
		$select .=  " inner join amostra a on(a.idamostra=re.idamostra)";
		$select .=  " inner join metodologia m on (m.idMetodologia=re.idMetodologia)  ";
		$select .=  " inner join kitsorologia k on(k.idKitSorologia=re.idKitSorologia)";
		$where = $this->_db->quoteInto(" WHERE a.idAmostra = ?", $idAmostra);
                $and = $this->_db->quoteInto(" AND a.inicial = ?", $inicial);
                
        		
		$select .= $where;
                //print_r($dados);
                //exit();
		
			 
                if($request['sidx']){
                $select .= " ORDER BY " . $request['sidx']  . " " . $request['sord'] . " LIMIT " . $start ." , ". $request['rows'];
                }else{
                $select .=  " LIMIT " . $start ." , ". $request['rows'] ;
                }
		
        	$remessa = $this->_db->fetchALL($select);
			
		for ($cont =0; $cont < count($remessa); $cont++)
		{
                	$dados['rows'][$cont]['id'] =  $remessa[$cont]['idRemessa'];
                        $dados['rows'][$cont]['cell'] =  array(
                                                                $remessa[$cont]['idRemessa'],
								$remessa[$cont]['dataRemessa'],
						                trim($remessa[$cont]['nomeLongo'])."(".trim($remessa[$cont]['tipoResultado']).")",
								$remessa[$cont]['resposta'],
                                                                $remessa[$cont]['valor1'],
                                                                $remessa[$cont]['valor2'],
                                                                $remessa[$cont]['metodologia'],
                                                                $remessa[$cont]['kitsorologia']
                                                                );
								
			
	    }
		
	 return $dados;
    }
}
?>  